package com.yuxi.Dao;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.yuxi.Entity.UserInfo;
import com.yuxi.Request.Page;




public interface BaseDao<T extends Serializable, PK extends Serializable> {
	    // 根据主键获取实体。如果没有相应的实体，返回 null。
		public T get(PK id);
		//添加一个实体
		public Serializable add(PK id);
		//添加一个实体并返回这个实体
		public T addAndReturn(PK id);		
		//删除一个实体
		public void delete(PK id);
		//删除一个实体
		public void delete(String hql,PK ...attr);
		//更新实体
		public void update(PK id);
		//无条件查询
		public List find(String hql);
		//有条件查询
		public List find(String hql,PK ...attr);	
		
		public Page splitPageQuery(String hql,Page p,PK...attr);
		
		public Page splitPageQuerySlect(String hql,Page p,String noSelct,PK...attr);
		//去重
		public Page splitPageQuerySelect(String hql,Page p,String noSelct,PK...attr);
		
		//public Page splitPageQuerySlectCout(String hql,Page p,String noSelct,PK...attr);
		
		
		public Integer execute(String sql, Object[] arges);
		
		public List<Map<String, Object>> executeSql(String sql, Object... arges);	
		
}
